Apache Commons Collections লাইব্রেরি বিভিন্ন ধরনের কাস্টম কালেকশন ডেটা স্ট্রাকচার তৈরি এবং ব্যবহারের জন্য ইউটিলিটি সরবরাহ করে। তবে কখনও কখনও আপনার প্রকল্পের নির্দিষ্ট প্রয়োজনীয়তার জন্য একটি Custom Collection তৈরি করার প্রয়োজন হতে পারে। Custom Collection তৈরি করার মাধ্যমে আপনি নতুন কালেকশন শ্রেণী তৈরি করতে পারেন যা বিশেষ ধরনের আচরণ বা প্রক্রিয়া অনুসরণ করবে।
এখানে আমরা Apache Commons Collections লাইব্রেরি ব্যবহার করে একটি Custom Collection তৈরি করার পদক্ষেপ দেখাবো। আমরা একটি কাস্টম List তৈরি করবো, যেটি কিছু অতিরিক্ত কার্যকারিতা যোগ করবে এবং সহজেই Java Collections Framework (JCF) এর সাথে কাজ করবে।
java.util.Collection
বা java.util.List
এর মতো একাধিক ইন্টারফেস বাস্তবায়ন (implement) করতে হবে, যার মাধ্যমে আপনার কাস্টম কালেকশন ক্লাসটি কাজ করবে।add()
, remove()
, size()
, clear()
ইত্যাদি মেথড লিখতে পারেন।Collection
ইন্টারফেসের সাথে মেলে এমন কিছু কাস্টম লজিক বা ফিল্টারিং, প্রক্রিয়া অ্যাপ্লাই করতে পারেন।আমরা একটি কাস্টম List তৈরি করব যা একটি element (অবজেক্ট) যোগ করার সময় কাস্টম শর্ত প্রয়োগ করবে এবং একই উপাদানটি duplicate হলে তাকে ইনসার্ট করবে না।
import java.util.ArrayList;
import java.util.Collection;
public class CustomList<E> implements Collection<E> {
private final ArrayList<E> list = new ArrayList<>();
@Override
public boolean add(E e) {
// Custom condition: don't allow duplicate elements
if (list.contains(e)) {
System.out.println(e + " already exists in the collection, not adding.");
return false;
}
return list.add(e);
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean contains(Object o) {
return list.contains(o);
}
@Override
public java.util.Iterator<E> iterator() {
return list.iterator();
}
@Override
public Object[] toArray() {
return list.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return list.toArray(a);
}
@Override
public boolean remove(Object o) {
return list.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return list.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends E> c) {
return list.addAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return list.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return list.retainAll(c);
}
@Override
public void clear() {
list.clear();
}
// Additional custom method for printing elements
public void printElements() {
System.out.println("Custom List Elements: " + list);
}
}
CustomList
একটি কাস্টম Collection ক্লাস যা Collection
ইন্টারফেস বাস্তবায়ন করেছে এবং এর মধ্যে একটি ArrayList
ব্যবহার করেছে।add()
মেথডে একটি কাস্টম শর্ত যোগ করা হয়েছে, যাতে এটি একই উপাদানকে duplicate না করার নিশ্চয়তা দেয়।printElements()
একটি অতিরিক্ত কাস্টম মেথড যা কালেকশনের উপাদানগুলো কনসোলে প্রিন্ট করবে।এখন, আমাদের কাস্টম CustomList
ক্লাসটি ব্যবহার করার জন্য একটি প্রধান ক্লাস তৈরি করি।
public class CustomCollectionTest {
public static void main(String[] args) {
// Create a CustomList
CustomList<String> customList = new CustomList<>();
// Add elements to the CustomList
customList.add("apple");
customList.add("banana");
customList.add("orange");
customList.add("apple"); // This will not be added as it's a duplicate
// Print elements in the list
customList.printElements(); // Output: Custom List Elements: [apple, banana, orange]
// Checking size
System.out.println("Size of Custom List: " + customList.size()); // Output: 3
}
}
apple already exists in the collection, not adding.
Custom List Elements: [apple, banana, orange]
Size of Custom List: 3
apple
যোগ করার পর দ্বিতীয়বার apple
যোগ করতে গেলে এটি কাস্টম শর্তের কারণে যুক্ত হয়নি (duplicate শর্তের জন্য)।printElements()
মেথডটি ব্যবহার করে কালেকশনের উপাদানগুলো প্রিন্ট করা হয়েছে।আপনি Apache Commons Collections লাইব্রেরি ব্যবহার করে সহজেই Custom Collections তৈরি করতে পারেন। Custom List, Custom Map বা অন্যান্য Collection তৈরির মাধ্যমে আপনি বিশেষ ধরনের আচরণ বা শর্ত প্রয়োগ করতে পারেন যা স্ট্যান্ডার্ড JCF এ সম্ভব নয়। এটি আপনাকে আপনার প্রোজেক্টে নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী কালেকশন ডেটা স্ট্রাকচার কাস্টমাইজ করার ক্ষমতা প্রদান করে।
common.read_more